/*
 * bruteforce.h
 *
 * Contient les définitions de types pour nos recherches.
 *
 *  Created on: Feb 28, 2010
 *      Author: vtellier
 */

#ifndef BRUTEFORCE_H_
#define BRUTEFORCE_H_

#include <pthread.h>	// Pour le type pthread_t

// Déclaration du type de données requises pour effectuer un brute forcing.
typedef struct
{
	int				max_length;		// Taille maximale de la clef.
	char *			checksum;		// Le checksum à craquer.
	int				jump;			// Le nombre de combinaisons que l'alogrithme devra sauter par itération.
	char *			value_at_start;	// Combinaison à partir de laquelle on commencera à chercher.
	char *			charset;		// La liste de caractères à inclure dans les combinaisons
	pthread_t *		competitors;	// Tableau des threads concurrents
	pthread_mutex_t	mutal_ex;		// Un verrou pour les exclusions mutuelles
	int *			ch_index;		// Un tableau d'entiers correspondants aux indice des caractères de la valeur de départ.
	int *			is_ended;		// L'adresse du booléen commun aux thread, qui leur permettra de s'arret lorsqu'un concurrent à trouvé la clef.
	char **			result;			// L'adresse du resultat de la recherche.
} t_bruteforce;

#endif /* BRUTEFORCE_H_ */
